🐧企鹅PENGUIN的背包讲解
前言———————关于动态规划(DP Dynamic Programming)中的背包问题 相信有很多人都无法搞懂其中的奥义 这篇帖子的意义便是为了帮助大家理解背包问题.(看到就请点一个赞吧)
1.背包问题的特点
背包问题与贪心问题不相同 贪心问题取的答案是问题局部的最优解 而背包问题取的答案是问题整体的最优解.
贪心问题只是考虑了如何做到利益最大化 而背包问题却要多去考虑背包空间与最大利益 也就是说 贪心是在开阔平原获得更多收获 而背包是在一个划定的空间里收获更多利益 所以说 背包也就相当于贪心PLUS.
2.01背包讲解
(希望屏幕前的大家可以好好看完下列文字)
关于背包问题中的01背包问题 其主要的核心特点就是拿或不拿 试想一下 A正要与B出门爬山 A需要将一些物品放入登山包中然后带走 其物品有着I(Important 重要性) 和 W(Weight 体积)两样数据 背包也有着Z(Zone 空间)一样数据 就在此时 A要如何要如何处理才能使带的所有东西都很重要 让背包的Important值最高同时不超过背包的Zone值.
伪代码:
状态转移方程:
下为代码展示(有注释版和无注释版):
3.完全背包问题讲解
完全背包实际上就是从01背包稍微改进了一下 01背包的每个物品都只可以拿一次 而完全背包可以拿多次 这就是不同之处.
伪代码:
状态转移方程:
下为代码展示(有注释版和无注释版):
(看完后就请点个赞吧)